#ifndef prs_TDotPath_H
#define prs_TDotPath_H

#include "prs.h"
#include "svl.h"

namespace prs {

////////////////////////////////////////////////////////////////////////////////

struct TDotPath : public TDebug
{
  void Execute(svl::TString SPath);
  //
  int   Count()           { return a.Numb();}
  char *operator[](int N) { return ((TItem*)a.Get(N))->Value;}
  //
  void Add(char *Name) { a.Add(new TItem(Name));}
  //
  void Add(int NFirst,TDotPath &From)
  {
    for (int N = NFirst; N < From.Count(); N++) { Add(From[N]);}
  }
  //
  void DeleteLast()  { a.DeleteLast();}
  bool IsLast(int N) { if (N >= Count()) { Except("IsLast[N >= Count()]");} return N + 1 == Count();}
  //
  svl::TString MakeSPath();

private:
  struct TItem : public svl::TArray_Object,public TDebug
  {
    svl::TString Value; TItem(char *V) { Value = V;}
  };
  svl::TArray a;
  svl_Except;
};

////////////////////////////////////////////////////////////////////////////////
}

#endif

